package com.egao.common.module.company.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.egao.common.core.web.JsonResult;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.Company;
import com.egao.common.module.company.entity.Position;
import com.egao.common.module.company.entity.vo.PositionFormVO;
import com.egao.common.module.company.entity.vo.PositionListVO;
import com.egao.common.module.company.entity.vo.PositionListVO;

import java.util.List;

/**
 * 职位信息(Recruit)表服务接口
 * @author dl
 */
public interface PositionService extends IService<Position> {

    /**
     * 职位列表查询
     * @param pageParam 分页对象
     * @return PositionListVO 职位列表VO
     */
    List<PositionListVO> listPage(PageParam<PositionListVO> pageParam);
    /**
     * 添加职位
     * @param positionFormVO 职位表单
     * @return JsonResult 结果对象
     */
    JsonResult savePosition(PositionFormVO positionFormVO);
    /**
     * 修改职位
     * @param positionFormVO 职位表单
     * @return JsonResult 结果对象
     */
    JsonResult updatePosition(PositionFormVO positionFormVO);
    /**
     * 修改职位状态
     * @param positionFormVO 职位表单
     * @return JsonResult 结果对象
     */
    JsonResult updatePositionState(PositionFormVO positionFormVO);
    /**
     * 查询职位详情
     * @param id 职位编号
     * @return JsonResult 结果对象
     */
    JsonResult detail(Integer id);
    /**
     * 查询单位所有有效职位
     * @param loginUserId 用户编号
     * @return JsonResult 职位集合
     */
    JsonResult list(Integer loginUserId);
    /**
     * 根据用户编号查询单位编号
     * @param userId 用户编号
     * @return Company 单位信息
     */
    Company getCompanyByUserId(Integer userId);
    /**
     * 根据单位编号查询职位
     * @param companyId 单位编号
     * @return List<Position> 职位集合
     */
    List<Position> getPositionByCompanyId(Integer companyId);

    /**
     * 根据职位编号查询职位
     * @param ids 编号
     * @return List<Position> 职位集合
     */
    List<Position> getPositionByIds(String ids);

    /**
     * 根据职位招聘数量
     * @return List<Position> 职位集合
     */
    List<Position> getPositionNumber();
}
